{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns  #绘图模块，基于matplotlib的可视化python包,不能完全替代matplotlib,只是对matplotlib进行升级\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号\n",
    "%matplotlib inline\n",
    "\n",
    "#pip install seaborn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.加载数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1754884 entries, 0 to 1754883\n",
      "Data columns (total 7 columns):\n",
      " #   Column         Dtype         \n",
      "---  ------         -----         \n",
      " 0   User_id        int64         \n",
      " 1   Merchant_id    int64         \n",
      " 2   Coupon_id      float64       \n",
      " 3   Discount_rate  object        \n",
      " 4   Distance       float64       \n",
      " 5   Date_received  datetime64[ns]\n",
      " 6   Date           datetime64[ns]\n",
      "dtypes: datetime64[ns](2), float64(2), int64(2), object(1)\n",
      "memory usage: 93.7+ MB\n"
     ]
    }
   ],
   "source": [
    "#parse_dates:将指定的列加载成日期的格式\n",
    "offline = pd.read_csv('ccf_offline_stage1_train.csv',parse_dates=['Date_received','Date'])\n",
    "offline.info()  #175+万条数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaT</td>\n",
       "      <td>2016-02-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1439408</td>\n",
       "      <td>4663</td>\n",
       "      <td>11002.0</td>\n",
       "      <td>150:20</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2016-05-28</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-02-17</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>1078.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-03-19</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-06-13</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaT</td>\n",
       "      <td>2016-05-16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-05-16</td>\n",
       "      <td>2016-06-13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1832624</td>\n",
       "      <td>3381</td>\n",
       "      <td>7610.0</td>\n",
       "      <td>200:20</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-04-29</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2029232</td>\n",
       "      <td>3381</td>\n",
       "      <td>11951.0</td>\n",
       "      <td>200:20</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2016-01-29</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2029232</td>\n",
       "      <td>450</td>\n",
       "      <td>1532.0</td>\n",
       "      <td>30:5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-05-30</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   User_id  Merchant_id  Coupon_id Discount_rate  Distance Date_received  \\\n",
       "0  1439408         2632        NaN           NaN       0.0           NaT   \n",
       "1  1439408         4663    11002.0        150:20       1.0    2016-05-28   \n",
       "2  1439408         2632     8591.0          20:1       0.0    2016-02-17   \n",
       "3  1439408         2632     1078.0          20:1       0.0    2016-03-19   \n",
       "4  1439408         2632     8591.0          20:1       0.0    2016-06-13   \n",
       "5  1439408         2632        NaN           NaN       0.0           NaT   \n",
       "6  1439408         2632     8591.0          20:1       0.0    2016-05-16   \n",
       "7  1832624         3381     7610.0        200:20       0.0    2016-04-29   \n",
       "8  2029232         3381    11951.0        200:20       1.0    2016-01-29   \n",
       "9  2029232          450     1532.0          30:5       0.0    2016-05-30   \n",
       "\n",
       "        Date  \n",
       "0 2016-02-17  \n",
       "1        NaT  \n",
       "2        NaT  \n",
       "3        NaT  \n",
       "4        NaT  \n",
       "5 2016-05-16  \n",
       "6 2016-06-13  \n",
       "7        NaT  \n",
       "8        NaT  \n",
       "9        NaT  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offline.head(10)   #NaT:时间日期格式的空值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.数据的规整"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "User_id               0\n",
       "Merchant_id           0\n",
       "Coupon_id        701602\n",
       "Discount_rate    701602\n",
       "Distance         106003\n",
       "Date_received    701602\n",
       "Date             977900\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#判断每一列当中有多少个空值\n",
    "offline.isnull().sum()\n",
    "#优惠券id，折扣率，领券日期，三者可能存在同时==null的情况"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1把“Discount_rate”列中的满减政策转换成折扣率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>NaN</td>\n",
       "      <td>null</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaT</td>\n",
       "      <td>2016-02-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1439408</td>\n",
       "      <td>4663</td>\n",
       "      <td>11002.0</td>\n",
       "      <td>150:20</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2016-05-28</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-02-17</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>1078.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-03-19</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-06-13</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   User_id  Merchant_id  Coupon_id Discount_rate  Distance Date_received  \\\n",
       "0  1439408         2632        NaN          null       0.0           NaT   \n",
       "1  1439408         4663    11002.0        150:20       1.0    2016-05-28   \n",
       "2  1439408         2632     8591.0          20:1       0.0    2016-02-17   \n",
       "3  1439408         2632     1078.0          20:1       0.0    2016-03-19   \n",
       "4  1439408         2632     8591.0          20:1       0.0    2016-06-13   \n",
       "\n",
       "        Date  \n",
       "0 2016-02-17  \n",
       "1        NaT  \n",
       "2        NaT  \n",
       "3        NaT  \n",
       "4        NaT  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offline['Discount_rate'] = offline['Discount_rate'].fillna('null')\n",
    "offline.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def discount_rate_opt(s): #s代表每一个元素\n",
    "    if ':' in s:\n",
    "        split = s.split(':')\n",
    "        discount_rate = (int(split[0]) - int(split[1]))/int(split[0])\n",
    "        return round(discount_rate,2)  #折扣率保留两位小数\n",
    "    elif s == 'null':\n",
    "        return np.NaN\n",
    "    else:\n",
    "        return float(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaT</td>\n",
       "      <td>2016-02-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1439408</td>\n",
       "      <td>4663</td>\n",
       "      <td>11002.0</td>\n",
       "      <td>0.87</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2016-05-28</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-02-17</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>1078.0</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-03-19</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2016-06-13</td>\n",
       "      <td>NaT</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   User_id  Merchant_id  Coupon_id  Discount_rate  Distance Date_received  \\\n",
       "0  1439408         2632        NaN            NaN       0.0           NaT   \n",
       "1  1439408         4663    11002.0           0.87       1.0    2016-05-28   \n",
       "2  1439408         2632     8591.0           0.95       0.0    2016-02-17   \n",
       "3  1439408         2632     1078.0           0.95       0.0    2016-03-19   \n",
       "4  1439408         2632     8591.0           0.95       0.0    2016-06-13   \n",
       "\n",
       "        Date  \n",
       "0 2016-02-17  \n",
       "1        NaT  \n",
       "2        NaT  \n",
       "3        NaT  \n",
       "4        NaT  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offline['Discount_rate']  = offline['Discount_rate'].map(discount_rate_opt)\n",
    "offline.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 Coupon_id字段：null代表无优惠券，此时Discount_rate与Date_received字段无意义。\n",
    "检查Coupon_id和Discount_rate与Date_received判断空值和非空值是否一一对应。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#np.all():判断一个课迭代数据中是否都为True，如果是返回True，否则返回False\n",
    "np.all([True,False,True])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nan1 = offline['Coupon_id'].isnull()  #判断优惠券是否为空\n",
    "nan2 = offline['Date_received'].isnull()   #判断领券日期是否为空\n",
    "np.all(nan1 == nan2)  #如果结果=true，说明之前的猜测：Coupon_id与Date_received空值与非空值是一一对应的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nan3 = offline['Discount_rate'].isnull()\n",
    "np.all(nan1 == nan3)#如果结果=true，说明之前的猜测：Coupon_id与Discount_rate空值与非空值是一一对应的关系"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3\n",
    "如果Date=null & Coupon_id!=null,有券未消费（cpon_no_consume）\n",
    "如果Date=null & Coupon_id =null,无券未消费（no_cpon_no_consume）\n",
    "如果Date！=null & Coupon_id=null,无券消费（no_cpon_consume）\n",
    "如果Date！=null & Coupon_id!=null,有券消费（cpon_consume）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "cpon_no_consume = offline[(offline['Date'].isnull() & offline['Coupon_id'].notnull())]\n",
    "no_cpon_no_consume = offline[(offline['Date'].isnull() & offline['Coupon_id'].isnull())]\n",
    "no_cpon_consume = offline[(offline['Date'].notnull() & offline['Coupon_id'].isnull())]\n",
    "cpon_consume = offline[(offline['Date'].notnull() & offline['Coupon_id'].notnull())]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "有券未消费:977900\n",
      "无券未消费:0\n",
      "无券消费:701602\n",
      "有券消费:75382\n"
     ]
    }
   ],
   "source": [
    "print('有券未消费:{}'.format(len(cpon_no_consume)))\n",
    "print('无券未消费:{}'.format(len(no_cpon_no_consume)))  #无意义，不需分析\n",
    "print('无券消费:{}'.format(len(no_cpon_consume)))\n",
    "print('有券消费:{}'.format(len(cpon_consume)))\n",
    "#用优惠券消费的用7万，相比其他用户来说，占比较少"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.数据分析\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cpon_no_consume    977900\n",
       "no_cpon_consume    701602\n",
       "cpon_consume        75382\n",
       "dtype: int64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#绘制饼图占比\n",
    "consume_status_dict = {'cpon_no_consume':len(cpon_no_consume),'no_cpon_consume':len(no_cpon_consume),'cpon_consume':len(cpon_consume)}\n",
    "consume_status = pd.Series(consume_status_dict)\n",
    "consume_status"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2629d49df88>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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IiLab1u2bNnjbfXm5mYBgNdffz3w0UcfeQFg3bp17j3t35Hi8fihOA3tA8MFERHttxkzZpSuWbPG03p7PB7H5MmTy9auXetetGhR7ubNm83XXnstOHfu3P6xWKzNY1144YU9n3jiiezW22OxGC6++OIeVVVVrldeeSX48ssvZwBAUVHRCABYtGhR9tKlSwMAsGDBgp7l5eWD+vXrN6ysrOywgQMHDi0pKRlaXl4+6IwzzujboR+e9okdOomIuqDC4h4jq7buufVgfxV06x7bXrn5g73tM2bMmMHBYDAeiURk/fr13vnz5++6aEejUTnnnHOqBgwYEB47dmzDgw8+mLds2bKMPn36RFavXu2bNm1a7eLFizNnz55dDwAXXXRRj5UrVwZFBBs2bPAuXbo064477iiKRCKyYMGCbWedddZO0zQxbty4pvnz5/dZuHDhxuOOO6703//+96cej0c3bNjg/vWvf919yZIlawDg0ksv3VZZWbnjoYceyjvssMNCmzdvdgcCAeu4446r+9GPftSvo74nah+GixQlAo8qIt/yvT4AblXUd3BZB4UITFW0/ScRUYqq2rrF7Hvl4g473oZbTtzn9WDlypX/AYB58+b1Peecc6p+/OMf17TeZ9myZf5p06bVqyqefPLJ/MGDB4cGDx4cUlXJzs7edc9i4cKFm5PPL7vssh4TJ05smDNnTl3LY61Zs8YzefLkhjPPPHNndXW16/zzz9+6aNGinFAoZPz973/PmDdvXrXH41EAuPXWW4vq6+td69ev98ZiMamqqnJ7PB4LAH70ox9xqOkhxnCRuv4ogkxVnLGvHUXgAnAJgEdVsRXA4QAWi6BQFU0iGJd4ff6+AosITgDwZ1Xk7GO/7gAOV8UziZ8HA4io4gsR5AGoBnCCKl4UQTaACapYsofDPSuCpar4nQjuAfC5Kn67r89NRPvv4Ycfznn55Zdz1q9f73344YcLAKCurs41fvz4hp/85CfbFyxY0Mfv91v19fWu2tpa8/e//31xNBoVt9utoVDIuPXWW7+qqKhoAgC3u+1uGKFQSNxut27dutW86KKL+vz85z/f3Ldv38gTTzyRd9lll229++671wHA7bff3m3mzJl1ubm54R07dpirVq0KbN++3V1TU2M2NjYaLpcLGzdu9KoqevbsGT355JPr2jwhdTiGixQggkwAXmC3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LfjMM8/k5Ofnx1566aWc0047rWb16tW+nj17RsaNG9eUXHL9kUceyXnyySdzWy6lXlpaOuzNN9/8z6xZswYuWbJkTbdu3eKff/65u7Ky0r2npdT3Nvtme3Ao6sHBlos0sbcJpFRhAbsHi8T2PU7zfai0DhaJbVWwh97u670KMFgQHQwul6vNv0yzsrKsfS25zqXUUx/DBe0XEZwL4F9d8TZD4nbJJFU84HQtRF1NdXW1a+bMmQOTF/01a9b4J0yYUGaapooImpqajF/96lebfv7zn/fc15LrAMCl1FMbwwW1W2KF0gsBPO10Ld/SdgAXiqAyMZSViNopPz8/vmzZss8AYP369e4FCxb0zs/Pj11zzTWVgwYNSi4fgOnTp+9zyXUA4FLqqY2jRahdRJAJe7bO2ckOnyI4UQRvi6BeBCsSI06S+69va84KEZydeLT12vrEe7NEcI8IvhTBNhHcJYKcFsfOFcFTIqhLnHdEq1qPFsGHIqgVwf1iL86WvM0zG8BtIrumKSei/fT444/nTJ069RutBcuWLfP369dv2O23315cXV1tzpgxo3TixIll//rXv7L+/ve/Z5eVlR320EMP5QD2UuqXX355DwCYMmVK7YoVK1YnH+PGjasH7KXUhw8fPuTuu+8urqqqcpeXlw969NFHC+66666iwYMHD+vdu3eES6l3TgwX1F4XAHg4OZeFCMYB+CvseSoGAngQwPMtJswaAXsq7uRjJIB62CudPtbqtVzY03u/lHjvIwCGwV7ddSqw61xJjwMYAOBw2PNyPJsMCyIYAHvmzucBjIY9Adj/JN+YmLb84cTnIaL9tH79evfDDz9cOH/+/JajvbB27Vr32LFjm5cuXbp65cqVnz7++OPrTNPUt95667Mzzjijeu7cuVWLFy/+fPLkyY0A8PTTT+eMGTOmCQD++c9/ZpeXlw9KPlasWJEBANOnT294//33Py0rK2tevnz56rlz51bPnDlz5/Lly1d369Ytetttt23OysqyvlklOY23Rai9Toc9A2fSfAAvqu6a4OoOEcyDPaX3UtVvzItxO4A7Exd3ALtWYUViLorvABgigm6J52OT/TpEcA2AJYmpzosBHAvgcFV8DOBjEXwPdovEo7DnulgP4BpVqAguBrBaBFe36Bz6IOzw8esD/laIHNKzW35MbujYoaj72mfDhg3umTNn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\n",
      "text/plain": [
       "<Figure size 576x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#消费方式构成的饼图（figure：看作是一张画布，axes：代表画布内的多个坐标系）\n",
    "fig,ax=plt.subplots(1,1,figsize=(8,10))\n",
    "consume_status.plot.pie(ax = ax,\n",
    "                       autopct='%1.1f%%',\n",
    "                       shadow=True,\n",
    "                        explode=[0.02,0.05,0.2],\n",
    "                        textprops={'fontsize':15,'color':'blue'},\n",
    "                        wedgeprops={'linewidth':1,'edgecolor':'black'},\n",
    "                        labels=['有券未消费 \\n ({})'.format(len(cpon_no_consume)),\n",
    "                                '无券消费 \\n ({})'.format(len(no_cpon_consume)),\n",
    "                               '用券消费 \\n ({})'.format(len(cpon_consume))\n",
    "                               ]\n",
    "                       )\n",
    "ax.set_ylabel('')  #去除ylable\n",
    "ax.set_title('消费占比情况')\n",
    "plt.legend(labels=['有券未消费','无券消费','用券消费'])\n",
    "#有券未消费占比55.7%最大，说明大多数人拿完券之后，尚未使用\n",
    "#无圈消费用户占比40%，说明很多人没有使用优惠券，可能优惠券的吸引力不大，客户没在意；可能，新用户比较多。\n",
    "#用券消费用户占比较小4.3%,说明我们的优惠券使用率不高。可以考虑是不是加大优惠券力度....."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.1在有券消费人群中，分析距离和优惠折扣"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Merchant_id\n",
       "3       0.0\n",
       "4       0.0\n",
       "13      0.0\n",
       "14      0.0\n",
       "18      0.0\n",
       "       ... \n",
       "8806    0.0\n",
       "8824    0.0\n",
       "8828    0.0\n",
       "8849    0.0\n",
       "8856    0.0\n",
       "Name: Distance, Length: 1431, dtype: float64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#各商家对应的顾客到店平均距离\n",
    "Merchant_distance = cpon_consume.groupby('Merchant_id')['Distance'].mean()\n",
    "Merchant_distance[Merchant_distance==0]\n",
    "#有4076个商家，有1431个商家的用券消费用户平均范围在500米以内"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Merchant_id\n",
       "3       0.670\n",
       "4       0.830\n",
       "5       0.750\n",
       "13      0.900\n",
       "14      0.830\n",
       "        ...  \n",
       "8844    0.895\n",
       "8849    0.950\n",
       "8850    0.950\n",
       "8852    0.950\n",
       "8856    0.925\n",
       "Name: Discount_rate, Length: 4076, dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#各商家对应的顾客到店消费平均折扣力度\n",
    "Merchant_discount_rate = cpon_consume.groupby('Merchant_id')['Discount_rate'].mean()\n",
    "Merchant_discount_rate.sort_values()\n",
    "Merchant_discount_rate.hist()\n",
    "Merchant_discount_rate.mean()  #所有商家平均折扣的平均值：0.88\n",
    "Merchant_discount_rate"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.2持券到店消费人数最多的商家"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "16\n",
      "Merchant_id\n",
      "5341    2800\n",
      "760     2627\n",
      "3381    2248\n",
      "6485    2029\n",
      "2099    1401\n",
      "2934    1310\n",
      "450     1094\n",
      "3532     968\n",
      "7555     925\n",
      "1520     870\n",
      "6901     855\n",
      "3621     851\n",
      "4142     832\n",
      "1379     587\n",
      "1469     584\n",
      "1433     559\n",
      "Name: customer_count, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "#对商家进行分组，取出用户id，对用户id进行去重统计数量、\n",
    "popular_merchant = cpon_consume.groupby('Merchant_id')['User_id'].apply(lambda x:len(x.unique())).sort_values(ascending=False)\n",
    "#找出持券消费人数>500的商家id\n",
    "popular_merchant500 = popular_merchant[popular_merchant>500]\n",
    "popular_merchant500.name = 'customer_count'  #指定列名为消费者数量（持券消费者）\n",
    "print(len(popular_merchant500))\n",
    "print(popular_merchant500)\n",
    "#共有16家店铺，持券消费人数在500人以上\n",
    "#持券消费人数最多商家是5341，持券消费人数在2800\n",
    "#排名最后的商家，持券消费人数未559人\n",
    "#这批商家对优惠券的使用方法得当，消费者喜欢用优惠券进行消费，可以适当借鉴这批商家的推广力度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.3持券消费人数在500人以上的商家，连接顾客到店平均距离和平均折扣力度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>customer_count</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Discount_rate</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Merchant_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5341</th>\n",
       "      <td>2800</td>\n",
       "      <td>0.168598</td>\n",
       "      <td>0.826036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>760</th>\n",
       "      <td>2627</td>\n",
       "      <td>0.349866</td>\n",
       "      <td>0.799873</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3381</th>\n",
       "      <td>2248</td>\n",
       "      <td>1.652429</td>\n",
       "      <td>0.744150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6485</th>\n",
       "      <td>2029</td>\n",
       "      <td>0.368567</td>\n",
       "      <td>0.770439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2099</th>\n",
       "      <td>1401</td>\n",
       "      <td>0.968072</td>\n",
       "      <td>0.900000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2934</th>\n",
       "      <td>1310</td>\n",
       "      <td>1.114833</td>\n",
       "      <td>0.830000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>450</th>\n",
       "      <td>1094</td>\n",
       "      <td>0.892164</td>\n",
       "      <td>0.819274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3532</th>\n",
       "      <td>968</td>\n",
       "      <td>0.272498</td>\n",
       "      <td>0.852289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7555</th>\n",
       "      <td>925</td>\n",
       "      <td>1.329977</td>\n",
       "      <td>0.828381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1520</th>\n",
       "      <td>870</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.925632</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6901</th>\n",
       "      <td>855</td>\n",
       "      <td>0.557895</td>\n",
       "      <td>0.834165</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3621</th>\n",
       "      <td>851</td>\n",
       "      <td>0.472799</td>\n",
       "      <td>0.747565</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4142</th>\n",
       "      <td>832</td>\n",
       "      <td>0.555882</td>\n",
       "      <td>0.900000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1379</th>\n",
       "      <td>587</td>\n",
       "      <td>0.706250</td>\n",
       "      <td>0.830096</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1469</th>\n",
       "      <td>584</td>\n",
       "      <td>2.092800</td>\n",
       "      <td>0.721870</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1433</th>\n",
       "      <td>559</td>\n",
       "      <td>1.054962</td>\n",
       "      <td>0.825959</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             customer_count  Distance  Discount_rate\n",
       "Merchant_id                                         \n",
       "5341                   2800  0.168598       0.826036\n",
       "760                    2627  0.349866       0.799873\n",
       "3381                   2248  1.652429       0.744150\n",
       "6485                   2029  0.368567       0.770439\n",
       "2099                   1401  0.968072       0.900000\n",
       "2934                   1310  1.114833       0.830000\n",
       "450                    1094  0.892164       0.819274\n",
       "3532                    968  0.272498       0.852289\n",
       "7555                    925  1.329977       0.828381\n",
       "1520                    870       NaN       0.925632\n",
       "6901                    855  0.557895       0.834165\n",
       "3621                    851  0.472799       0.747565\n",
       "4142                    832  0.555882       0.900000\n",
       "1379                    587  0.706250       0.830096\n",
       "1469                    584  2.092800       0.721870\n",
       "1433                    559  1.054962       0.825959"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merchant_pop_dis = pd.merge(left=popular_merchant500,right=Merchant_distance,on='Merchant_id',how='inner')\n",
    "merchant_pop_dis_rate = pd.merge(left=merchant_pop_dis,right=Merchant_discount_rate,on='Merchant_id',how='inner')\n",
    "merchant_pop_dis_rate"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.4计算到店消费人数与平均距离和折扣力度的相关系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>customer_count</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Discount_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>customer_count</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.306180</td>\n",
       "      <td>-0.204102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Distance</th>\n",
       "      <td>-0.306180</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.397376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Discount_rate</th>\n",
       "      <td>-0.204102</td>\n",
       "      <td>-0.397376</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                customer_count  Distance  Discount_rate\n",
       "customer_count        1.000000 -0.306180      -0.204102\n",
       "Distance             -0.306180  1.000000      -0.397376\n",
       "Discount_rate        -0.204102 -0.397376       1.000000"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#corr(correlation:相关系数)，用来计算df数据中列与列的相关性（皮尔逊相关系数），取值范围[-1,1]之间\n",
    "#1：完全正相关，-1：完全负相关\n",
    "#绝对值越大：相关性越大，反之成立\n",
    "#正相关：随着变量的增大，而增大，反之同理\n",
    "#负相关：随着变量的增大，而减小，反之同理\n",
    "merchant_pop_dis_rate.corr()\n",
    "#持券消费人数，与距离和折扣率都呈现出负相关，属于生活中的正常现象"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2629e5e9fc8>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#用热力图展示相关系数(data:相关系数，annot：显示相关系数值，cmap：颜色范围，vmax：最大值，vmin：最小值)\n",
    "sns.heatmap(data=merchant_pop_dis_rate.corr(),annot=True,cmap='Accent',vmax=1,vmin=-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "#由图可知：\n",
    "#1.到店消费人数的多少与顾客到店铺的距离之间呈现负相关，相关系数0.31，在0.3~0.5之间，为低度相关\n",
    "#2.到店消费人数的多少与优惠打折力度呈现负相关，相关系数0.2，在0~0.3之间，为相关程度极弱\n",
    "#综上所述，这些店家之所以火爆，应该是物美价廉导致，与距离和优惠力度相关性不大"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.1分析每天中优惠券的总体发放量与使用量情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "#业务分析：日期（优惠券的发放日期Date_received，使用日期date）用作图表的x轴\n",
    "#需要统计每天优惠券发放数量和使用数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "776984"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offline['Date'].notnull().sum()  #77.7万消费数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1053282"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offline['Date_received'].notnull().sum()  #已经发送出105万优惠券"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['2016-01-01T00:00:00.000000000', '2016-01-02T00:00:00.000000000',\n",
       "       '2016-01-03T00:00:00.000000000', '2016-01-04T00:00:00.000000000',\n",
       "       '2016-01-05T00:00:00.000000000'], dtype='datetime64[ns]')"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#取出存在消费日期的记录，进行升序，再去重\n",
    "date_sort = offline[offline['Date'].notnull()]['Date'].sort_values().unique()\n",
    "date_sort[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['2016-01-01T00:00:00.000000000', '2016-01-02T00:00:00.000000000',\n",
       "       '2016-01-03T00:00:00.000000000', '2016-01-04T00:00:00.000000000',\n",
       "       '2016-01-05T00:00:00.000000000'], dtype='datetime64[ns]')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#取出存在领券日期的记录，进行升序，再去重\n",
    "date_receive_sort = offline[offline['Date_received'].notnull()]['Date_received'].sort_values().unique()\n",
    "date_receive_sort[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date_received</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-01-01</th>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-02</th>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-03</th>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-04</th>\n",
       "      <td>98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-05</th>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-11</th>\n",
       "      <td>351</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-12</th>\n",
       "      <td>330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-13</th>\n",
       "      <td>439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-14</th>\n",
       "      <td>394</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-15</th>\n",
       "      <td>355</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>167 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "               count\n",
       "Date_received       \n",
       "2016-01-01        74\n",
       "2016-01-02        67\n",
       "2016-01-03        74\n",
       "2016-01-04        98\n",
       "2016-01-05       107\n",
       "...              ...\n",
       "2016-06-11       351\n",
       "2016-06-12       330\n",
       "2016-06-13       439\n",
       "2016-06-14       394\n",
       "2016-06-15       355\n",
       "\n",
       "[167 rows x 1 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#每天优惠券的使用量（即持券消费人群）\n",
    "consume_num_everday =  cpon_consume[['User_id','Date_received']]\n",
    "consume_num_everday = consume_num_everday.groupby('Date_received').count()\n",
    "consume_num_everday = consume_num_everday.rename(columns={'User_id':'count'})\n",
    "consume_num_everday"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date_received</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-01-01</th>\n",
       "      <td>554</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-02</th>\n",
       "      <td>542</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-03</th>\n",
       "      <td>536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-04</th>\n",
       "      <td>577</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-05</th>\n",
       "      <td>691</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-11</th>\n",
       "      <td>5211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-12</th>\n",
       "      <td>4005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-13</th>\n",
       "      <td>7861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-14</th>\n",
       "      <td>4755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-15</th>\n",
       "      <td>3475</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>167 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "               count\n",
       "Date_received       \n",
       "2016-01-01       554\n",
       "2016-01-02       542\n",
       "2016-01-03       536\n",
       "2016-01-04       577\n",
       "2016-01-05       691\n",
       "...              ...\n",
       "2016-06-11      5211\n",
       "2016-06-12      4005\n",
       "2016-06-13      7861\n",
       "2016-06-14      4755\n",
       "2016-06-15      3475\n",
       "\n",
       "[167 rows x 1 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#每天发放的优惠券数量(取出所有领券日期！=null的数据，在进行按天分组，计数就可以)\n",
    "coupon_sendout_everyday = offline[offline['Date_received'].notnull()][['Date_received','User_id']]\n",
    "coupon_sendout_everyday = coupon_sendout_everyday.groupby('Date_received').count()\n",
    "coupon_sendout_everyday = coupon_sendout_everyday.rename(columns={'User_id':'count'})\n",
    "coupon_sendout_everyday"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "shape mismatch: objects cannot be broadcast to a single shape",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-34-fdbddf1c2ad9>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m18\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;31m# plt.bar(x=date_receive_sort,height=coupon_sendout_everyday['count'],label='每天发券量')\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdate_sort\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mheight\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mconsume_num_everday\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'count'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlabel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'每天用券量'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      5\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0myscale\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'log'\u001b[0m\u001b[1;33m)\u001b[0m  \u001b[1;31m#对y轴进行对数缩放\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlegend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\pyplot.py\u001b[0m in \u001b[0;36mbar\u001b[1;34m(x, height, width, bottom, align, data, **kwargs)\u001b[0m\n\u001b[0;32m   2439\u001b[0m     return gca().bar(\n\u001b[0;32m   2440\u001b[0m         \u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mwidth\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbottom\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0malign\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0malign\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2441\u001b[1;33m         **({\"data\": data} if data is not None else {}), **kwargs)\n\u001b[0m\u001b[0;32m   2442\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2443\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\__init__.py\u001b[0m in \u001b[0;36minner\u001b[1;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m   1597\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1598\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1599\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1600\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1601\u001b[0m         \u001b[0mbound\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mbar\u001b[1;34m(self, x, height, width, bottom, align, **kwargs)\u001b[0m\n\u001b[0;32m   2372\u001b[0m         x, height, width, y, linewidth = np.broadcast_arrays(\n\u001b[0;32m   2373\u001b[0m             \u001b[1;31m# Make args iterable too.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2374\u001b[1;33m             np.atleast_1d(x), height, width, y, linewidth)\n\u001b[0m\u001b[0;32m   2375\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2376\u001b[0m         \u001b[1;31m# Now that units have been converted, set the tick locations.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mbroadcast_arrays\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\numpy\\lib\\stride_tricks.py\u001b[0m in \u001b[0;36mbroadcast_arrays\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    262\u001b[0m     \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_m\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msubok\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msubok\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0m_m\u001b[0m \u001b[1;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    263\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 264\u001b[1;33m     \u001b[0mshape\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_broadcast_shape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    265\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    266\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mshape\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0marray\u001b[0m \u001b[1;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\numpy\\lib\\stride_tricks.py\u001b[0m in \u001b[0;36m_broadcast_shape\u001b[1;34m(*args)\u001b[0m\n\u001b[0;32m    189\u001b[0m     \u001b[1;31m# use the old-iterator because np.nditer does not handle size 0 arrays\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    190\u001b[0m     \u001b[1;31m# consistently\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 191\u001b[1;33m     \u001b[0mb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbroadcast\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m32\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    192\u001b[0m     \u001b[1;31m# unfortunately, it cannot handle 32 or more arguments directly\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    193\u001b[0m     \u001b[1;32mfor\u001b[0m \u001b[0mpos\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m32\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m31\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: shape mismatch: objects cannot be broadcast to a single shape"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘制每天发券量和每天用券量\n",
    "plt.figure(figsize=(18,6))\n",
    "# plt.bar(x=date_receive_sort,height=coupon_sendout_everyday['count'],label='每天发券量')\n",
    "plt.bar(x=date_sort,height=consume_num_everday['count'],label='每天用券量')\n",
    "plt.yscale('log')  #对y轴进行对数缩放\n",
    "plt.legend()\n",
    "#16年2月为例，用券量级别再1000，发券量再10万左右，在100倍左右，优惠券的使用率还是非常低的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2629ede5f48>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABBUAAAFjCAYAAABiwjN8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAaF0lEQVR4nO3df6zlZZ0f8PdnGDYzBSKKMCmLOtBgK7GwyqhQxnW2wlCKSZXSSoMUdQnNJhJTNZGNxGpkFTXVRJu1S8SCEjdF7LprWBWtskJXbWfWQq0ESwljBiUd0OU38mOe/nEPw8ydO3PPPHPuPT/u65Xc5NzvfZ7vPN+ZZ+45530+z/Ot1loAAAAADtSqcQ8AAAAAmE5CBQAAAKCLUAEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKDL6nEP4DkvfvGL2/r168c9DAAAAGCerVu3PtBaO3r+8YkJFdavX58tW7aMexgAAADAPFW1baHjlj8AAAAAXYQKAAAAQBehAgAAANBlYvZUAAAAgHF6+umns3379jz55JPjHsrYrFmzJscdd1wOPfTQodoLFQAAACDJ9u3bc8QRR2T9+vWpqnEPZ9m11vLggw9m+/btOf7444fqY/kDAAAAJHnyySdz1FFHrchAIUmqKkcdddQBVWoIFQAAAGBgnIHCs88+m2eeeWafP9+5c2d27ty5pGM40Ou3/AEAAAAmwM0335yPf/zjWb167q36XXfdlXXr1uXII49MMhcqfPKTn8ypp56aJLn22mtz/vnn57bbbktV5eyzz97jfCeffHLuuOOOXd+fdNJJ+elPfzrSMQsVAAAAYAHrL79ppOe796pz9/vzc845J+ecc86u7zdv3pyvfvWrOeKII/Zqu23btnz2s5/NxRdfnFe96lV505velDe84Q1Zs2bNrjZr167do8/hhx+eZK4i4gtf+EIuueSSg67MsPwBAAAAJsSPf/zjnHnmmTnzzDOzZcuWvOUtb9n1/U9+8pNd7S677LJ89KMfTVVl3bp1edvb3pYLL7wwTz/99K428wODVatW5c4778zmzZtz66235rHHHjvo8apUAAAAgAnxyCOPZOPGjfnQhz60x/HLL788jz/+eJLk05/+dI488shs3rx518/f/e5357777ssZZ5yRz3/+8zn55JPzxBNPZOPGjXniiSfyjne8I7/85S/zvve9Lx/72Mfy2te+diTjFSoAAADAhFi1at8LClatWpVt27blu9/9bl7+8pfnla98ZR544IEcf/zxefbZZ5Mk73rXu3ZVIKxduza33Xbbrv7XX399brpptEs6hAoAAAAwQa699trccsstexy75557cv755+dlL3tZvv71rydJTj311Nx999354Ac/mG3btuU973lPLr744mUdq1ABANhl/oZUi20oBQCM3tvf/vYFlz/Md+ONN+b9739/kuQXv/hFXvKSl+zV5plnnsl1112XRx99dI/j999/f4455pj9VkYMw0aNAAAAMCFaa7n22muzadOmPb6+/OUvZ+fOnbvafeYzn8nq1avzute9Lknys5/9bI9Q4ZlnnsnPf/7zvOY1r8k999yTiy66KE888USeeuqp7Ny5M5dcckm++c1vHvR4VSoAAADAAsZRsfeb3/xmn5UKTz31VFprOe+883LUUUfl+uuvT5J8+MMfzre//e188Ytf3NV+9erVee9735uLLrooxxxzTJLkzW9+c974xjemtZYTTjghZ5999kGPt1prB32SUdiwYUPbsmXLuIcBACua5Q8ArGR33nlnXvGKV4x7GIt67LHHcthhhy3Z+Rf6e6iqra21DfPbWv4AAAAAU2QpA4UDJVQAAACAgUmp5h+XA71+oQIAAAAkWbNmTR588MEVGyy01vLggw9mzZo1Q/exUSMAsF/z91lI7LUAwGw67rjjsn379uzYsWPcQxmbNWvW5Ljjjhu6vVABAAAAkhx66KE5/vjjxz2MqWL5AwAAANBFqAAAAAB0ESoAAAAAXYQKAAAAQBehAgAAANBFqAAAAAB0ESoAAAAAXYQKAAAAQBehAgAAANBFqAAAAAB0ESoAAAAAXYQKAAAAQBehAgAAANBFqAAAAAB0ESoAAAAAXYQKAAAAQBehAgAAANBFqAAAAAB0ESoAAAAAXVaPewAAwHRaf/lNe3x/71XnjmkkAMC4qFQAAAAAuggVAAAAgC5CBQAAAKCLUAEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKCLUAEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKCLUAEAAADoIlQAAAAAuggVAAAAgC5DhQpVdU1V/aCqrtjHz19QVd+oqpur6s+q6reG6QcAAABMr0VDhao6L8khrbXTk5xQVScu0OzCJJ9qrW1Ocn+SfzJkPwAAAGBKDVOpsCnJDYPHNyfZOL9Ba+2PW2vfHnx7dJL/N0w/AAAAYHoNEyocluS+weNfJVm3r4ZVdXqSF7bWfjhMv6q6tKq2VNWWHTt2HNDAAQAAgPEaJlR4NMnawePD99Wnql6U5LNJ3jlsv9ba1a21Da21DUcfffSBjBsAAAAYs2FCha15funCKUnund9gsDHjV5L8YWtt27D9AAAAgOm1eog2X0tya1Udm+ScJBdU1ZWttd3v6PD7SV6d5ANV9YEkn1ug32mjHToAAAAwTouGCq21h6tqU5KzknyitXZ/ktvntflc5oKEPczr99AoBgwAAABMhmEqFdJa+3Wev5PD0Hr7AQAAAJNvmD0VAAAAAPYiVAAAAAC6CBUAAACALkIFAAAAoItQAQAAAOgiVAAAAAC6CBUAAACALkIFAAAAoMvqcQ8AAJgd6y+/aa9j91517hhGAgAsB5UKAAAAQBehAgAAANBFqAAAAAB0ESoAAAAAXYQKAAAAQBehAgAAANBFqAAAAAB0WT3uATA89/4GAABgkqhUAAAAALoIFQAAAIAuQgUAAACgi1ABAAAA6GKjRgAAYCzmb0RuE3KYPioVAAAAgC5CBQAAAKCLUAEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKCLUAEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKDL6nEPAAAAYCVYf/lNe3x/71XnjmkkMDpCBQAAgDGZHzQkwgami1BhzPwSAQAAYFrZUwEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKCLjRoBAGDK2OwbmBQqFQAAAIAuQgUAAACgi1ABAAAA6CJUAAAAALoIFQAAAIAuQgUAAACgi1tKzoD5txRyOyEAAACWg0oFAAAAoItKBQAAgEXMrw5OVAhDolIBAAAA6CRUAAAAALpY/gAALDmbCgPAbFKpAAAAAHQRKgAAAABdLH+YUMpEAQAAmHRCBQAAgBFy+0lWEssfAAAAgC5CBQAAAKDLUMsfquqaJCcluam1duU+2qxLcmNr7fWD7387yY+S3D1o8i9aazsOfsgsF/s6AAAAsD+LVipU1XlJDmmtnZ7khKo6cYE2L0xyXZLDdjv8uiR/1FrbNPgSKAAAAMAMGWb5w6YkNwwe35xk4wJtnk3y1iQP73bstCSXVNXfVNVHFzpxVV1aVVuqasuOHTIHAAAAmCbDLH84LMl9g8e/SvLq+Q1aaw8nSVXtfvgbST6S5PEk36mqk1trd8zrd3WSq5Nkw4YN7UAHDwAAPM/yVWC5DVOp8GiStYPHhw/ZJ0n+urX2SGvt2SQ/TrLXsgkAAABgeg1TqbA1c0sefpjklCR3DXnub1XVv0ryUJLNSf6ka4QAMGHcfxwAYM4wocLXktxaVccmOSfJBVV1ZWvtikX6fTjJ95I8leQ/ttaGDSMAAACAKbBoqNBae7iqNiU5K8knWmv3J7l9H2037fb4e0n+wWiGCQAAAEyaYSoV0lr7dZ6/AwQAAADAcKECAADAMNyBAlaWYe/kAAAAALAHlQozys7kwCzwaRcAwGQTKgAAwAokuAVGQagAAABMDGEHTBehAsvOEwUAAMBsECowEoICAACAlcfdHwAAAIAuKhVYMu5AAQAAMNuECsvIEgEAAGAY3jswLYQKAAAww1SPAkvJngoAAABAF5UKAAfBpz8AAKxkQgUOiDdQLMb6PwAAWDmECsw0b3ABAACWjlDhIHnTCgxLpQ8AALNGqADAiiMQBgAYDaECADAWqncAYPq5pSQAAADQRaUCwBRRtg8A+6cKCpaXSgUAAACgi1ABAAAA6GL5A8AKYvkEAACjJFQAWALevAMAsBIIFQCYKgeyAddStWVpCeUAYHoIFQAYO2/oAQCmk1ABL+YBAADo4u4PAAAAQBeVCktgkj/5t04VAACAUVGpAAAAAHRRqQAAACSZ7IpbYDKpVAAAAAC6qFQAgAlnPxwAYFIJFVhxlPUBAACMhlABAGacSgcAYKnYUwEAAADoIlQAAAAAulj+AMBBU14PALAyCRUAYAwEMQDALBAqAAAAE08YC5NJqAAAACwpgQDMLqECwDzzX/gky//iZxLGAAAAixEqAAAAdFKFwUonVIABTwgAAAAHRqjARPNGf7L594Hx8f8PAJgEQgWAGeVNJwAAS23VuAcAAAAATCeVCswMn8oCAAAsL6ECwJQbRaAmlJsNbkUKACw3oQLAkLzxZjHTNEcEEADAKNhTAQAAAOiiUgGAmTBNVQIAALNCpQIAAADQRagAAAAAdBEqAAAAAF2ECgAAAEAXGzUCAADAEpn1zaSHChWq6pokJyW5qbV25T7arEtyY2vt9YPvD03yX5K8KMk1rbUvjGbIALNl1p9oAACYXYsuf6iq85Ic0lo7PckJVXXiAm1emOS6JIftdviyJFtba2ckOb+qjhjRmAEAAIAJMEylwqYkNwwe35xkY5L/M6/Ns0nemuTP5/W7fPD4+0k2JPne7p2q6tIklybJS1/60uFHDQBTQiUKADDLhgkVDkty3+Dxr5K8en6D1trDSVJV++u3boF+Vye5Okk2bNjQhh00s8eLbgAAgOkzzN0fHk2ydvD48CH7HEw/AAAAYAoMU6mwNXNLHn6Y5JQkdw157uf63Tjo98OeAcJ8qhoAAAAmwzChwteS3FpVxyY5J8kFVXVla+2KRfpdl+Qvq+r1mbtzxI8ObqgAAADAJFk0VGitPVxVm5KcleQTrbX7k9y+j7abdnu8rarOyly1wgdba8+OZMQAAMDYza8eTVSQwko0TKVCWmu/zvN3gBhaa+0XPf0AAIDJYfkpsC9DhQoAMCpemALAZDmQ52bP48wnVABgQV40AMDsGffzu2Uzs0eoAAD7Me4XXwAAk2zVuAcAAAAATCehAgAAANDF8gcAAGDmWc42Oxb6t7RXw/gIFQBgQnjBCwBMG6ECAAAAE0f1wXSwpwIAAADQRagAAAAAdLH8AQAAgINiX6CVS6gAwNCsbQQAYHdCBQAAYCr5dHyy+fdZGeypAAAAAHQRKgAAAABdhAoAAABAF3sqAADABLAZ7uSwFwA9Vur/YaECAABTZaW94Vtp1wuTZKUGBQdCqAAAAMBYCc+ml1ABAABYkXwKDQdPqAAAADAF9hWC+JSfcXL3BwAAAKCLUAEAAADoYvkDAEvCOlUAgNmnUgEAAADoolIBAABGwGZ5wEqkUgEAAADoIlQAAAAAulj+AAAAwF5mYUnPLFzDpFOpAAAAAHQRKgAAAABdLH8AJsr8ErVEmRoAAEwqlQoAAABAF5UKAACwRFTgAbNOqAAATLx9vTGzqzcAjJdQAQAAgBVDBdFo2VMBAAAA6KJSAQAAlpmlOzB5/L/so1IBAAAA6KJSAQAA9sEnlwD7J1QAAGBmCQUAlpblDwAAAEAXlQoAwEzZ163CfGLNYswRgAOnUgEAAADoolIBAIC97KviAwB2p1IBAAAA6CJUAAAAALoIFQAAAIAuQgUAAACgi1ABAAAA6OLuDwAAcADcGQPgeSoVAAAAgC4qFQAAAOAAzK9YWsnVSioVAAAAgC5CBQAAAKCL5Q8AACwbmxwCzBaVCgAAAECXoSoVquqaJCcluam1duUwbapqdZJ7Bl9Jcllr7X+NYMwAANDNBmsAo7NopUJVnZfkkNba6UlOqKoTh2xzcpI/ba1tGnwJFAAAAGCGDLP8YVOSGwaPb06yccg2pyV5U1X996q6ZlC5AAAAAMyIYUKFw5LcN3j8qyTrhmzzP5Kc2Vp7bZJDk/zT+Z2q6tKq2lJVW3bs2HGgYwcAAADGaJjqgUeTrB08PjwLBxELtbmjtfabwbEtSfZaNtFauzrJ1UmyYcOGNvywAQDgefZJABiPYSoVtub5JQ+nJLl3yDZfqqpTquqQJG9OcvtBjRQAAACYKMNUKnwtya1VdWySc5JcUFVXttau2E+b05LckeTLSSrJX7TWvjPaoQMAAADjtGio0Fp7uKo2JTkrySdaa/dnXtXBAm0eSvJQ5u4AAQAAAMygoe7I0Fr7dZ6/u0N3GwCASTJ/HX4yGWvxJ3Vcy83fA8DkG2ZPBQAAAIC9DFWpAAAAS8ndGwCmk1ABAGBKTMIb70kYAwCTQ6gAK4AXgAAAwFIQKgAArHDCZwB6CRWARY3ixaYXrAAAMHuECgAA8whCD4xbPwKsXEIFGAMvvgAAWEpeb7JchAqwQnmiAWCpqfgAmH1CBWBsvNgEOHgHEhILlAEYtVXjHgAAAAAwnVQqwAzxCdSBUy0BzCq/3wBYDkIFmFJeLAIsL793AWBvlj8AAAAAXVQqAHvwSRwAADAsoQIwtewhAUwCYSwAK5lQAfZjEt60TsIYAFg6QgkApplQAQBgxBYKCoTEAMwiGzUCAAAAXVQqwARRAgsAAEwToQIwc4QzAACwPCx/AAAAALqoVIAl5lNzAABgVgkVgBXBrusAADB6lj8AAAAAXYQKAAAAQBehAgAAANDFngrAVLDhJQAATB6hAnTwBhcAAMDyBwAAAKCTUAEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKCLUAEAAADoIlQAAAAAuggVAAAAgC5CBQAAAKCLUAEAAADoIlQAAAAAuqwe9wBgVqy//Ka9jt171bljGAkAAMDyUKkAAAAAdBEqAAAAAF2ECgAAAEAXoQIAAADQRagAAAAAdBEqAAAAAF2ECgAAAEAXoQIAAADQRagAAAAAdBEqAAAAAF2ECgAAAEAXoQIAAADQRagAAAAAdBEqAAAAAF2ECgAAAEAXoQIAAADQZahQoaquqaofVNUVB9JmmH4AAADAdFo0VKiq85Ic0lo7PckJVXXiMG2G6QcAAABMr2EqFTYluWHw+OYkG4dsM0w/AAAAYEpVa23/DaquSfKZ1trtVbU5yatba1ct1ibJiUP0uzTJpYNv/36Su0ZyVePx4iQPjHsQsAjzlHEx95h05iiTxpxk0pmjK8/LWmtHzz+4eoiOjyZZO3h8eBaubliozaL9WmtXJ7l6iDFMvKra0lrbMO5xwP6Yp4yLucekM0eZNOYkk84c5TnDLH/YmueXLpyS5N4h2wzTDwAAAJhSw1QqfC3JrVV1bJJzklxQVVe21q7YT5vTkrQFjgEAAAAzYtFKhdbaw5nbdPGHSX6vtXb7vEBhoTYPLXRstEOfODOxjIOZZ54yLuYek84cZdKYk0w6c5QkQ2zUCAAAALCQYfZUAAAAANiLUAGAiVRVf7eqzqyqI8Y9FgAAFiZUSFJVL6iqb1TVzVX1Z1X1W1V1TVX9oKqu2K3duqq6dYH+X6+q39nP+Q8dtPlvVfXO3Y6/oqr+fPRXxCwaxzytqpdW1S1V9d2qurqqammujkk2prn38iT/OckZSf6qqn5rCS6NGTGu5/HBz15ZVd8e7RUxzcb0O/O3q2r74Dn7lqra6z7ysLsx/97cb1+mj1BhzoVJPtVa25zk/iQXJDmktXZ6khOq6sSqemGS65IctnvHqrowyf9trf3P/Zz/siRbW2tnJDm/qo6oqr+X5JNJXrAE18NsWvZ5muTfJPmD1to/TvKSJP9w5FfFNBjH3Ds5yTtaax9Ock+S40d+VcyScczRDILWTyU5dORXxDQbx3x8XZI/aq1tGnztWILrYraM6/fmMH2ZMkKFJK21P26tPfcpw9FJ3pbkhsH3NyfZmOTZJG9N8vBz/arqRUn+fZJfV9Xv7eeP2LTb+b6fZEOSR5L88xFdAivAOOZpa+0DrbU7B8eOSvLACC6FKTOmuXdjkm1VdW6SFya5ezRXwywa0/N4krwjyfdGcAnMkDHNx9OSXFJVf1NVHx3RpTDDxjFPD6AvU2b1uAcwSarq9My9eL03yX2Dw79K8urBLTIzr/r73yb5SpI/SfKxQQL3+9mz+uDLmUv3dj/futba9xY4HyxqOefpbn/mW5P879baL0Z8OUyRMcy9w5P8yyTbkrhVEYtazjlaVUdl7kX42YMv2MMy/878RpKPJHk8yXeq6uTW2h2jvypmzTLP0736ttb+YvRXxXITKgwMkrPPZq564D1J1g5+dHj2XdHxqiTva63dX1U3JDmrtfbPFjj3uYPzPTQ436MjHj4rxDjmaVWdkOR9Sc4c4aUwZcYx91prf5vk4qr6UpLXJPnR6K6IWTOGOXpVkj9srT3tAwLmG8N8/OvW2m8GP/9xkhOTCBXYrzHM0736JhEqzADLH5LU3AZgX8nci4NtSbZmruQnSU7JXHK3kLuTnDB4vCFzn6YtZNjzwT6NY54O1tL9aZJ3ttYeOqgLYGqNae59rqp+d3DsyCR/230BzLwxPY+/IcnHq+qWJL9TVVf2XwGzZEzz8Vs1d8ecv5Nkc5KfHMQlsAKMaZ4O25cpU62pKK2qP0jy0SS3Dw79p8yldf81yTlJTnvuDVVV3dJa2zR4fGySz2eu3OfxJOe11h5Z4PwvS/KXSb6T5B8Nzvfs/PPB/oxjng7+vH+d5K5Bs3/XWvurpbg+JteY5t5Lk3wpc8sebm6tfWSpro/pN87n8fnnhDH9zvzdJJ9L8lSSq1tr/2Gpro/ZMKZ5um6YvkwfocI+DD6hPSvJ91tr94/gfMdmLq37lk98GRXzlHEx95h05iiTxHxkGpin9BIqAAAAAF3sqQAAAAB0ESoAAAAAXYQKAAAAQBehAgAAANBFqAAAAAB0+f9BgsPFyzqLeQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1296x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#计算每天的优惠券与发券量占比\n",
    "plt.figure(figsize=(18,6))\n",
    "plt.bar(x=date_receive_sort,height=consume_num_everday['count']/coupon_sendout_everyday['count'],\n",
    "       label='百分比')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "#由图可知，优惠券使用率最高在16年3月底，达到了30%\n",
    "#使用率最低在16年1月底，最低为3%左右。\n",
    "#整体来看，优惠券使用率波动较大。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
